package main.java.design.flyweight;

import java.util.HashMap;
import java.util.Map;

/**
 * <p>
 *     本角色负责创建和管理享元角色。本角色必须保证享元对象可以被系统适当地共享。当一个客户端对象请求一个享元对象的时候，
 *     享元工厂角色需要检查系统中是否已经有一个符合要求的享元对象，如果已经有了，享元工厂角色就应当提供这个已有的享元对象；
 *     如果系统中没有一个适当的享元对象的话，享元工厂角色就应当创建一个新的合适的享元对象。
 * </p>
 *
 * @author : wangdejian
 * @version 1.0
 * @date : 2020/6/15 21:52
 */
public class FlyweightFactory {

    private Map<String, WeiqiFlyweight> cache = new HashMap<>();


    public Flyweight getWeiqiFlyweight(String color) {

        if (!cache.containsKey(color)) {
            cache.put(color, new WeiqiFlyweight(color));
        }
        return cache.get(color);
    }

    /**
     * 计算map大小
     * @return
     */
    public int getCount() {
        return cache.size();
    }
}
